package com.hgwz.java;

import java.util.Random;

public class Test6NationalID {
    public static void main(String[] args) {
        Test6NationalID t6 = new Test6NationalID();
        String nationalId = t6.randomNationalId();

        System.out.println("Nation ID: " + nationalId);
        System.out.println("id = " + t6.randome18number());

    }

    public String randome18number(){
        Random r = new Random();
        String id = "";

        for(int i=0; i < 18; i++){
            id += r.nextInt(10);
        }

        return id;
    }

    public String randomNationalId() {
        String cardSN = "";
        String[] provinceCode = {
                "11", "12", "13", "14", "15",
                "21", "22", "23",
                "31", "32", "33", "34", "35", "36", "37",
                "41", "42", "43", "44", "45", "46",
                "50", "51", "52", "53", "54",
                "61", "62", "63", "64", "65",
                "81", "82"
        };
        String[] cityCode = {
                "01", "02", "03", "04", "05", "06", "07", "08", "09",
                "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
                "30", "31", "32", "33", "34", "35", "36", "37", "38", "39"
        };
        String[] villageCode = {
                "01", "02", "03", "04", "05", "06", "07", "08", "09",
                "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
                "80", "81", "82", "83", "84", "85", "86", "87", "88", "89"
        };
        String[] birthYear = {
                "194", "195", "196", "197", "198", "199", "200", "201"
        };
        String[] birthMonth = {
                "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"
        };
        String[] birthDay = {
                "01", "02", "03", "04", "05", "06", "07", "08", "09",
                "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                "20", "21", "22", "23", "24", "25", "26", "27", "28"
        };
        String[] oneCode = {
                "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
        };
        String[] checkCode = {"9", "8", "7", "6", "5", "4", "3", "2", "1", "0", "X"};
        cardSN += getRandomFromArray(provinceCode); //create province
        cardSN += getRandomFromArray(cityCode); //create city
        cardSN += getRandomFromArray(villageCode); //create village
        cardSN += getRandomFromArray(birthYear);
        cardSN += getRandomFromArray(oneCode);
        cardSN += getRandomFromArray(birthMonth);
        cardSN += getRandomFromArray(birthDay);
        cardSN += getRandomFromArray(oneCode);
        cardSN += getRandomFromArray(oneCode);
        cardSN += getRandomFromArray(oneCode);
        cardSN += getRandomFromArray(checkCode);
        return cardSN;
    }

    private String getRandomFromArray(String[] strArray) {
        Random random = new Random();
        return strArray[random.nextInt(strArray.length)];
    }
}
